package com.ctc;

public class CTCMsg
{
    // CTC命令标识
    /**
     * 应答指令
     */
    public static final byte[] CTC_CMD_ACK = new byte[]{0x00, 0x01};
    /**
     * 握手指令
     */
    public static final byte[] CTC_CMD_HANDSHAKE = new byte[]{0x00, 0x02};
    /**
     * 握手应答
     */
    public static final byte[] CTC_CMD_HANDSHAKE_RSP = new byte[]{0x00, 0x03};
    /**
     * 抄表指令
     */
    public static final byte[] CTC_CMD_METER_READ = new byte[]{0x00, 0x04};
    /**
     * 抄表数据回传
     */
    public static final byte[] CTC_CMD_METER_DATA = new byte[]{0x00, 0x05};
    /**
     * 心跳指令
     */
    public static final byte[] CTC_CMD_HEARTBEAT = new byte[]{0x00, 0x06};
    /**
     * 心跳应答
     */
    public static final byte[] CTC_CMD_HEARTBEAT_RSP = new byte[]{0x00, 0x07};
    /**
     * 投币指令
     */
    public static final byte[] CTC_CMD_COIN_IN = new byte[]{0x00, 0x08};
    /**
     * 投币应答
     */
    public static final byte[] CTC_CMD_COIN_IN_RSP = new byte[]{0x00, 0x09};
    /**
     * 通道选择指令
     */
    public static final byte[] CTC_CMD_CHANNEL_SEL = new byte[]{0x00, 0x0A};
    /**
     * 奖励指令
     */
    public static final byte[] CTC_CMD_REWARD = new byte[]{0x00, 0x0B};
    /**
     * 实体数据(实物币,实物票)上报
     */
    public static final byte[] CTC_CMD_PHYSICAL_REPORT = new byte[]{0x00, 0x0C};
    /**
     * 查询投币数
     */
    public static final byte[] CTC_CMD_QUERY_COIN = new byte[]{0x00, 0x0D};
    /**
     * 查询投币数应答
     */
    public static final byte[] CTC_CMD_QUERY_COIN_RSP = new byte[]{0x00, 0x0E};
    /**
     * 设置投币数
     */
    public static final byte[] CTC_CMD_SET_COIN = new byte[]{0x00, 0x0F};
    /**
     * 氛围控制指令
     */
    public static final byte[] CTC_CMD_ATMOSPHEREEVENT = new byte[]{0x00, 0x10};

    // CTC命令数据长度
    /**
     * 应答指令-长度
     */
    public static final int CTC_CMDLEN_ACK = 3;  // 2 + 1（ACK消息长度）
    /**
     * 握手指令-长度
     */
    public static final int CTC_CMDLEN_HANDSHAKE = 22;  // 4 + 16 + 2（CTC_HandshakeMsgV1）
    /**
     * 握手应答-长度
     */
    public static final int CTC_CMDLEN_HANDSHAKE_RSP = 22;  // 4 + 16 + 2（CTC_HandshakeRspMsgV1）
    /**
     * 抄表数据回传-长度
     */
    public static final int CTC_CMDLEN_METER_DATA_RSP = 50;  // 1 + 4（CTC_MeterDataRspMsgV1）
    /**
     * 心跳指令-长度
     */
    public static final int CTC_CMDLEN_HEARTBEAT = 1;  // 1（CTC_HeartbeatMsgV1）
    /**
     * 心跳应答-长度
     */
    public static final int CTC_CMDLEN_HEARTBEAT_RSP = 3;  // 1 + 2（CTC_HeartbeatRspMsgV1）
    /**
     * 投币指令-长度
     */
    public static final int CTC_CMDLEN_COIN_IN = 36;  // 4 + 16 + 16（CTC_CoinInMsgV1）
    /**
     * 投币应答-长度
     */
    public static final int CTC_CMDLEN_COIN_IN_RSP = 17;  // 1 + 16（CTC_CoinInRspMsgV1）
    /**
     * 通道选择指令-长度
     */
    public static final int CTC_CMDLEN_CHANNEL_SEL = 2;  // 1 + 1（CTC_ChannelSelMsgV1）
    /**
     * 奖励指令-长度
     */
    public static final int CTC_CMDLEN_REWARD = 5;  // 1 + 4（CTC_RewardMsgV1）
    /**
     * 实体数据(实物币,实物票)上报-长度
     */
    public static final int CTC_CMDLEN_PHYSICAL_REPORT = 5;  // 1 + 4（CTC_PhysicalReportMsgV1）
    /**
     * 查询投币数-长度
     */
    public static final int CTC_CMDLEN_QUERY_COIN = 2;  // 2（CTC_CoinPriceMsgV1）
    /**
     * 查询投币数应答-长度
     */
    public static final int CTC_CMDLEN_QUERY_COIN_RSP = 3;  // 2 + 1（CTC_CoinPriceRspMsgV1）
    /**
     * 设置投币数-长度
     */
    public static final int CTC_CMDLEN_SET_COIN = 2;  // 2（CTC_CoinPriceMsgV1）
    /**
     * 氛围控制指令-长度
     */
    public static final int CTC_CMDLEN_ATMOSPHERE_EVENT = 7; // 2 + 1 + 4（CTC_AtmosphereData）

    // ACK结果码
    /**
     * 成功
     */
    public static final byte CTC_ACK_SUCCESS = 0x00;
    /**
     * 包头错误
     */
    public static final byte CTC_ACK_HEADER_ERR = 0x01;
    /**
     * CRC错误
     */
    public static final byte CTC_ACK_CRC_ERR = 0x02;
    /**
     * 长度错误
     */
    public static final byte CTC_ACK_LENGTH_ERR = 0x03;
    /**
     * 不支持的指令
     */
    public static final byte CTC_ACK_UNSUPPORTED = 0x04;
    /**
     * 超时
     */
    public static final byte CTC_ACK_TIMEOUT = 0x05;
    /**
     * 设备忙
     */
    public static final byte CTC_ACK_BUSY = 0x06;
}